package repositorioJuego;

import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;


import modelo.carrera.Carrera;

public class Juego implements Runnable{
	
	private Thread hilo; 
	private LinkedHashMap listaCarrera;
	public Juego( LinkedHashMap lista){
		hilo = new Thread(this);
		this.listaCarrera = lista;
		hilo.start();
	}
	
	// la carreras deben venir ordenadas por fecha de largada
	public void run(){
		
		Date fechaMayor = null;
		Date fechaMenor = null;
		Date fechaActual = null;
		Date fechaLargada = null;
		Carrera carrera = null;
		long diferenciaMils;
		Collection listaValores = listaCarrera.values();    
		Iterator itr = listaValores.iterator();     
		
		while(itr.hasNext()){
			
			carrera = (Carrera)itr.next();			
			fechaLargada = (Date)carrera.getHorarioLargada();
			fechaActual = new Date();
			if (!carrera.getFinalizada()){
				if (fechaActual.compareTo(fechaLargada) > 0){
			
				    fechaMayor = fechaActual;
				    fechaMenor = fechaLargada;
				   }else{
				    fechaMayor = fechaLargada;
				    fechaMenor = fechaActual;
			
				   }
				diferenciaMils = fechaMayor.getTime() - fechaMenor.getTime();				
				
				try {
					Thread.sleep(diferenciaMils);
				} catch (InterruptedException e) {
				}			
				
				carrera.iniciarCarrera();
			}
		}
	}
}
